#include <func.h>

int main(int argc,char* argv[])
{
    // ARGS_CHECK(argc,2);
    DIR *dir;
    dir=opendir(argv[1]);
    ERROR_CHECK(dir,NULL,"opendir");
    struct dirent *p;
    struct stat buf;
    int ret;
    char a[10]={0};
    while((p=readdir(dir))){
        ret=stat(p->d_name,&buf);
        int i=buf.st_mode;
        int k=0;
        for(int j=0;j<3;j++){
            if(i%2==1){
                a[k]='x';
            }
            else{
                a[k]='-';
            }
            i=i>>1;
            k++;
            if(i%2==1){
                a[k]='w';
            }
            else{
                a[k]='-';
            }
            i=i>>1;
            k++;
            if(i%2==1){
                a[k]='r';
            }
            else{
                a[k]='-';
            }
            i=i>>1;
            k++;
        }
        for(;k>=0;k--){
            printf("%c",a[k]);
        }
        printf(" %3ld %s %s %4ld %s %s\n",buf.st_nlink,getpwuid(buf.st_uid)->pw_name,getgrgid(buf.st_gid)->gr_name,buf.st_size,ctime(&buf.st_mtime)+5,p->d_name);
    }
    closedir(dir);
    return 0;
}